package cn.iocoder.yudao.module.dr.controller.admin.collectionmanagement.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 藏品三维采集 Excel 导入 VO
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false，避免用户导入有问题
@ExcelIgnoreUnannotated // 忽略未标注 @ExcelProperty 的字段
public class Collection3dExportExcelVO {

    // ========== 第一部分：藏品关键信息 ==========
    
    @Schema(description = "藏品总登记号")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 24) // 蓝色
    @ExcelProperty({"藏品关键信息", "藏品总登记号"})
    private String generalAccessionNumber;

    @Schema(description = "名称")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 24) // 蓝色
    @ExcelProperty({"藏品关键信息", "名称"})
    private String collectionName;

    @Schema(description = "数量")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 24) // 蓝色
    @ExcelProperty({"藏品关键信息", "数量"})
    private String collectionNum;

    @Schema(description = "成果名称")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 24) // 蓝色
    @ExcelProperty({"藏品关键信息", "成果名称"})
    private String resultName;

    @Schema(description = "文件格式")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 24) // 蓝色
    @ExcelProperty({"藏品关键信息", "文件格式"})
    private String fileFormat;

    // ========== 第二部分：加工成果数据信息 ==========
    
    @Schema(description = "加工日期")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 57) // 绿色
    @ExcelProperty({"加工成果数据信息", "加工日期"})
    private LocalDateTime processingDate;

    @Schema(description = "加工单位")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 57) // 绿色
    @ExcelProperty({"加工成果数据信息", "加工单位"})
    private String processingUnit;

    @Schema(description = "加工人")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 57) // 绿色
    @ExcelProperty({"加工成果数据信息", "加工人"})
    private String processor;

    @Schema(description = "加工成果质量检查人")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 57) // 绿色
    @ExcelProperty({"加工成果数据信息", "加工成果质量检查人"})
    private String qualityInspector;

    @Schema(description = "文件大小(M)")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 57) // 绿色
    @ExcelProperty({"加工成果数据信息", "文件大小(M)"})
    private BigDecimal fileSize;

    @Schema(description = "模型精度(mm)")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 57) // 绿色
    @ExcelProperty({"加工成果数据信息", "模型精度(mm)"})
    private BigDecimal modelAccuracy;

    /*@Schema(description = "平均点间距(mm)")
    @ExcelProperty({"加工成果数据信息", "平均点间距(mm)"})
    private BigDecimal avgPointSpacing;

    @Schema(description = "最大点间距(mm)")
    @ExcelProperty({"加工成果数据信息", "最大点间距(mm)"})
    private BigDecimal maxPointSpacing;*/

    @Schema(description = "贴图分辨率(dpi)")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 57) // 绿色
    @ExcelProperty({"加工成果数据信息", "贴图分辨率(dpi)"})
    private String textureResolution;

    // ========== 第三部分：采集数据信息-三维扫描点云数据采集 ==========
    
    @Schema(description = "三维扫描点云数据采集-采集单位")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "采集单位"})
    private String scanAcquisitionUnit;

    @Schema(description = "三维扫描点云数据采集-采集地点")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "采集地点"})
    private String scanAcquisitionLocation;

    @Schema(description = "三维扫描点云数据采集-采集日期")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "采集日期"})
    private LocalDateTime scanAcquisitionDate;

    @Schema(description = "三维扫描点云数据采集-采集人员")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "采集人员"})
    private String scanAcquisitionPersonnel;

    @Schema(description = "三维扫描点云数据采集-采集设备品牌型号")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "采集设备品牌型号"})
    private String scanEquipmentModel;

    @Schema(description = "三维扫描点云数据采集-文件格式")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "文件格式"})
    private String scanFileFormat;

    @Schema(description = "三维扫描点云数据采集-模型精度(mm)")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "模型精度(mm)"})
    private BigDecimal scanModelAccuracy;

    @Schema(description = "三维扫描点云数据采集-采集质量检查人")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 13) // 黄色
    @ExcelProperty({"采集数据信息", "三维扫描点云数据采集", "采集质量检查人"})
    private String scanAcquisitionInspector;

    // ========== 第四部分：采集数据信息-摄影测量纹理数据采集 ==========
    
    @Schema(description = "摄影测量纹理数据采集-采集单位")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "采集单位"})
    private String photoAcquisitionUnit;

    @Schema(description = "摄影测量纹理数据采集-采集地点")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "采集地点"})
    private String photoAcquisitionLocation;

    @Schema(description = "摄影测量纹理数据采集-采集日期")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "采集日期"})
    private LocalDateTime photoAcquisitionDate;

    @Schema(description = "摄影测量纹理数据采集-采集人员")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "采集人员"})
    private String photoAcquisitionPersonnel;

    @Schema(description = "摄影测量纹理数据采集-采集设备品牌型号")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "采集设备品牌型号"})
    private String photoEquipmentModel;

    @Schema(description = "摄影测量纹理数据采集-文件格式")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "文件格式"})
    private String photoFileFormat;

    @Schema(description = "摄影测量纹理数据采集-采集影像总数(张)")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "采集影像总数(张)"})
    private Integer totalImages;

    @Schema(description = "摄影测量纹理数据采集-采集质量检查人")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "采集质量检查人"})
    private String photoAcquisitionInspector;

    @Schema(description = "摄影测量纹理数据采集-分辨率(dpi)")
    @HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 22) // 灰色
    @ExcelProperty({"采集数据信息", "摄影测量纹理数据采集", "分辨率(dpi)"})
    private String resolution;
}
